home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Anwendun / Pov / POV302 / SCENES / LEVEL3 / CHESS.POV next >
Encoding:
Text File  |  1997-07-15  |  11.1 KB  |  510 lines

  1. /*
  2.  * chess.pov
  3.  *
  4.  * POV-Ray 3.0 scene description for chess board
  5.  *
  6.  * Copyright (c) 1991, 1996 Ville Saari
  7.  *
  8.  * Created: 01-Feb-91
  9.  * Updated: 01-Jul-96
  10.  *
  11.  * Author:
  12.  *
  13.  *   Ville Saari
  14.  *   Tallbergin puistotie 7 B 21
  15.  *   00200 Helsinki
  16.  *   FINLAND
  17.  *
  18.  *   EMail: vs@iki.fi
  19.  */
  20.  
  21.  
  22. #include "shapes.inc"
  23.  
  24. global_settings { assumed_gamma 1.8 }
  25. default { finish { ambient .3 diffuse .7 } }
  26.  
  27. #declare r=seed(54321)
  28.  
  29. camera { location <59, 20, -48> look_at <0, 0, 1> }
  30.  
  31. light_source { <800, 600, -200> rgb 1 }
  32.  
  33. #declare Pawn = union
  34.    {
  35.    sphere { 7*y, 1.5 }
  36.    sphere { 0, 1 scale <1.2, .3, 1.2> translate 5.5*y }
  37.  
  38.    intersection
  39.       {
  40.       plane { y, 5.5 }
  41.       object { Hyperboloid_Y translate 5*y scale <.5, 1, .5> }
  42.       plane { -y, -2.5 }
  43.  
  44.       bounded_by { sphere { 3.75*y, 1.86 } }
  45.       }
  46.  
  47.    sphere { 0, 1 scale <2, .5, 2> translate 2.3*y }
  48.  
  49.    intersection
  50.       {
  51.       sphere { 0, 2.5 }
  52.       plane { -y, 0 }
  53.       }
  54.    }
  55.  
  56. #declare Rook = union
  57.    {
  58.    difference
  59.       {
  60.       cylinder { 8*y, 10*y, 2 }
  61.       object { Cylinder_Y scale <1.2, 1, 1.2> }
  62.       box { <-.5, 9, -2.5>, <.5, 10.5, 2.5> }
  63.       box { <-2.5, 9, -.5>, <2.5, 10.5, .5> }
  64.  
  65.       bounded_by { sphere { 9*y, sqrt(5) } }
  66.       }
  67.  
  68.    intersection
  69.       {
  70.       plane { y, 8 }
  71.       object { Hyperboloid_Y scale <1, 1.5, 1> translate 5.401924*y }
  72.       plane { -y, -3 }
  73.  
  74.       bounded_by { sphere { 5.5*y, 3.14 } }
  75.       }
  76.  
  77.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  78.  
  79.    intersection
  80.       {
  81.       sphere { 0, 3 }
  82.       plane { -y, 0 }
  83.       }
  84.    }
  85.  
  86. #declare Knight = union
  87.    {
  88.    intersection
  89.       {
  90.       object { Cylinder_Z scale 17.875 translate <-18.625, 7, 0> inverse }
  91.       object { Cylinder_Z scale 17.875 translate <18.625, 7, 0> inverse }
  92.       object { Cylinder_X scale 5.1 translate <0, 11.2, -5> inverse }
  93.  
  94.       union
  95.          {
  96.          plane { y, 0 rotate 30*x translate 9.15*y }
  97.          plane { z, 0 rotate -20*x translate 10*y }
  98.          }
  99.  
  100.       union
  101.          {
  102.          plane { -y, 0 rotate 30*x translate 7.15*y }
  103.          plane { y, 0 rotate 60*x translate 7.3*y }
  104.          }
  105.  
  106.       union
  107.          {
  108.          plane { y, 0 rotate -45*z }
  109.          plane { y, 0 rotate 45*z }
  110.          translate 9*y
  111.          }
  112.  
  113.       object { Cylinder_Y scale 2 }
  114.       sphere { 7*y, 4 }
  115.  
  116.       bounded_by { sphere { 7*y, 4 } }
  117.       }
  118.  
  119.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  120.  
  121.    intersection
  122.       {
  123.       sphere { 0, 3 }
  124.       plane { -y, 0 }
  125.       }
  126.    }
  127.  
  128. #declare Bishop = union
  129.    {
  130.    sphere { 10.8*y, .4 }
  131.  
  132.    intersection
  133.       {
  134.       sphere { 0, 1 scale <1.4, 2.1, 1.4> translate 8.4*y }
  135.       plane { -y, -7 }
  136.       box { <-2, 0, -.25>, <2, 4, .25> rotate 30*x translate 8.5*y inverse }
  137.  
  138.       bounded_by { sphere { 0, 1 scale <1.4, 2.1, 1.4> translate 8.4*y } }
  139.       }
  140.  
  141.    sphere { 0, 1 scale <1.5, .4, 1.5> translate 7*y }
  142.  
  143.    intersection
  144.       {
  145.       plane { y, 7 }
  146.       object { Hyperboloid_Y scale <.6, 1.4, .6> translate 7*y }
  147.       plane { -y, -3 }
  148.  
  149.       bounded_by { sphere { 4.64*y, 2.48 } }
  150.       }
  151.  
  152.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  153.  
  154.    intersection
  155.       {
  156.       sphere { 0, 3 }
  157.       plane { -y, 0 }
  158.       }
  159.    }
  160.  
  161. #declare QueenAndKing = union
  162.    {
  163.    sphere { 10.5*y, 1.5 }
  164.  
  165.    difference
  166.       {
  167.       cone { 11.5*y, 13/6, 8*y, 1 }
  168.  
  169.       sphere { <1.75, 12, 0>, .9 rotate  150*y }
  170.       sphere { <1.75, 12, 0>, .9 rotate  120*y }
  171.       sphere { <1.75, 12, 0>, .9 rotate   90*y }
  172.       sphere { <1.75, 12, 0>, .9 rotate   60*y }
  173.       sphere { <1.75, 12, 0>, .9 rotate   30*y }
  174.       sphere { <1.75, 12, 0>, .9 }
  175.       sphere { <1.75, 12, 0>, .9 rotate  -30*y }
  176.       sphere { <1.75, 12, 0>, .9 rotate  -60*y }
  177.       sphere { <1.75, 12, 0>, .9 rotate  -90*y }
  178.       sphere { <1.75, 12, 0>, .9 rotate -120*y }
  179.       sphere { <1.75, 12, 0>, .9 rotate -150*y }
  180.       sphere { <1.75, 12, 0>, .9 rotate -180*y }
  181.  
  182.       bounded_by { box { <-13/6, 8, -13/6>, <13/6, 11.5, 13/6> } }
  183.       }
  184.  
  185.    sphere { 0, 1 scale <1.8, .4, 1.8> translate 8*y }
  186.  
  187.    intersection
  188.       {
  189.       plane { y, 8 }
  190.       object { Hyperboloid_Y scale <.7, 1.6, .7> translate <0, 7, 0> }
  191.       plane { -y, -3 }
  192.  
  193.       bounded_by { sphere { 5.22*y, 2.93 } }
  194.       }
  195.  
  196.    sphere { 0, 1 scale <2.5, .5, 2.5> translate 2.8*y }
  197.  
  198.    intersection
  199.       {
  200.       sphere { 0, 3 }
  201.       plane { -y, 0 }
  202.       }
  203.    }
  204.  
  205. #declare Queen = union
  206.    {
  207.    sphere { 12.3*y, .4 }
  208.    object { QueenAndKing }
  209.    }
  210.  
  211. #declare King = union
  212.    {
  213.    box { <-.25, 11.5, -.25>, <.25, 13.5, .25> }
  214.    box { <-.75, 12.5, -.25>, <.75, 13, .25> }
  215.    object { QueenAndKing }
  216.    }
  217.  
  218. #declare WWood = texture
  219.    {
  220.    pigment
  221.       {
  222.       wood
  223.  
  224.       colour_map
  225.          {
  226.          [ .2 colour rgb <.7, .4, .1>   ]
  227.          [ .5 colour rgb <.95, .62, .3> ]
  228.          }
  229.  
  230.       turbulence .07
  231.       quick_colour rgb <.95, .62, 0>
  232.       rotate 90*x
  233.       scale .4
  234.       translate <200, 0, 100>
  235.       }
  236.  
  237.    finish { specular 1 roughness .01 }
  238.    }
  239.  
  240. #declare BWood = texture
  241.    {
  242.    pigment
  243.       {
  244.       wood
  245.  
  246.       colour_map
  247.          {
  248.          [ .4 colour rgb <.45, .25, 0> ]
  249.          [ .7 colour rgb <.3, .16, 0>  ]
  250.          }
  251.  
  252.       turbulence .07
  253.       quick_colour rgb <.4, .2, 0>
  254.       rotate 90*x
  255.       scale .4
  256.       translate <100.0, 0, -200.0>
  257.       }
  258.  
  259.    finish { specular 1 roughness .01 }
  260.    }
  261.  
  262. #declare FWood = texture
  263.    {
  264.    pigment
  265.       {
  266.       wood
  267.  
  268.       colour_map
  269.          {
  270.          [ .4 colour rgb <.55, .35, 0> ]
  271.          [ .7 colour rgb <.35, .2, 0>  ]
  272.          }
  273.  
  274.       quick_colour rgb <.45, .3, 0>
  275.  
  276.       turbulence .07
  277.       scale <.6 .6 6>
  278.       }
  279.  
  280.    finish { specular 1 roughness .02 }
  281.    }
  282.  
  283. #declare WPawn   = object { Pawn   texture { WWood } }
  284. #declare BPawn   = object { Pawn   texture { BWood } }
  285. #declare WRook   = object { Rook   texture { WWood } }
  286. #declare BRook   = object { Rook   texture { BWood } }
  287. #declare WKnight = object { Knight texture { WWood } }
  288. #declare BKnight = object { Knight texture { BWood } }
  289. #declare WBishop = object { Bishop texture { WWood } }
  290. #declare BBishop = object { Bishop texture { BWood } }
  291. #declare WQueen  = object { Queen  texture { WWood } }
  292. #declare BQueen  = object { Queen  texture { BWood } }
  293. #declare WKing   = object { King   texture { WWood } }
  294. #declare BKing   = object { King   texture { BWood } }
  295.  
  296. #declare Frame_side = intersection
  297.    {
  298.    box { <-35, -3, -35>, <35, 0, -32> }
  299.    plane { -x+z, 0 }
  300.    plane { x+z, 0 }
  301.    }
  302.  
  303. // The frame of the chessboard
  304.  
  305. union
  306.    {
  307.    object { Frame_side }
  308.    object { Frame_side rotate 180*y }
  309.  
  310.    texture { FWood rotate -88*y translate <200, 40, -20> }
  311.    }
  312.  
  313. union
  314.    {
  315.    object { Frame_side rotate -90*y }
  316.    object { Frame_side rotate 90*y  }
  317.  
  318.    texture { FWood rotate 1.2*x translate <100, 30, 0> }
  319.    }
  320.  
  321. // The board
  322.  
  323. box
  324.    {
  325.    <-32, -3, -32>, <32, 0, 32>
  326.  
  327.    texture
  328.       {
  329.       tiles
  330.          {
  331.          texture
  332.             {
  333.             pigment
  334.                {
  335.                marble
  336.  
  337.                colour_map
  338.                   {
  339.                   [ .7 colour rgb 1  ]
  340.                   [ .9 colour rgb .8 ]
  341.                   [ 1  colour rgb .5 ]
  342.                   }
  343.  
  344.                quick_colour rgb .8
  345.                turbulence 1
  346.                scale .6
  347.                rotate -30*y
  348.                }
  349.  
  350.             finish { specular 1 roughness .02 reflection .25 }
  351.             }
  352.          tile2 texture
  353.             {
  354.             pigment
  355.                {
  356.                granite
  357.  
  358.                colour_map
  359.                   {
  360.                   [0 colour rgb 0  ]
  361.                   [1 colour rgb .5 ]
  362.                   }
  363.  
  364.                quick_colour rgb .3
  365.                scale .3
  366.                }
  367.  
  368.             finish { specular 1 roughness .02 reflection .25 }
  369.             }
  370.          }
  371.  
  372.       scale 8
  373.       }
  374.    }
  375.  
  376. // White pieces
  377.  
  378. union
  379.    {
  380.    object { WPawn rotate 360*rand(r)*y translate -28*x }
  381.    object { WPawn rotate 360*rand(r)*y translate -20*x }
  382.    object { WPawn rotate 360*rand(r)*y translate -12*x }
  383.    object { WPawn rotate 360*rand(r)*y translate  -4*x }
  384.    object { WPawn rotate 360*rand(r)*y translate   4*x }
  385.    object { WPawn rotate 360*rand(r)*y translate  12*x }
  386.    object { WPawn rotate 360*rand(r)*y translate  20*x }
  387.    object { WPawn rotate 360*rand(r)*y translate  28*x }
  388.  
  389.    translate -20*z
  390.    }
  391.  
  392. union
  393.    {
  394.    object { WRook   rotate 360*rand(r)*y translate -28*x }
  395.    object { WKnight                      translate -20*x }
  396.    object { WBishop rotate 360*rand(r)*y translate -12*x }
  397.    object { WQueen  rotate 360*rand(r)*y translate  -4*x }
  398.    object { WKing   rotate 360*rand(r)*y translate   4*x }
  399.    object { WBishop rotate 360*rand(r)*y translate  12*x }
  400.    object { WKnight                      translate  20*x }
  401.    object { WRook   rotate 360*rand(r)*y translate  28*x }
  402.  
  403.    translate -28*z
  404.    }
  405.  
  406. // Black pieces
  407.  
  408. union
  409.    {
  410.    object { BPawn rotate 360*rand(r)*y translate -28*x }
  411.    object { BPawn rotate 360*rand(r)*y translate -20*x }
  412.    object { BPawn rotate 360*rand(r)*y translate -12*x }
  413.    object { BPawn rotate 360*rand(r)*y translate  -4*x }
  414.    object { BPawn rotate 360*rand(r)*y translate   4*x }
  415.    object { BPawn rotate 360*rand(r)*y translate  12*x }
  416.    object { BPawn rotate 360*rand(r)*y translate  20*x }
  417.    object { BPawn rotate 360*rand(r)*y translate  28*x }
  418.  
  419.    translate 20*z
  420.    }
  421.  
  422. union
  423.    {
  424.    object { BRook   rotate 360*rand(r)*y translate -28*x }
  425.    object { BKnight rotate 180*y         translate -20*x }
  426.    object { BBishop rotate 360*rand(r)*y translate -12*x }
  427.    object { BQueen  rotate 360*rand(r)*y translate  -4*x }
  428.    object { BKing   rotate 360*rand(r)*y translate   4*x }
  429.    object { BBishop rotate 360*rand(r)*y translate  12*x }
  430.    object { BKnight rotate 180*y         translate  20*x }
  431.    object { BRook   rotate 360*rand(r)*y translate  28*x }
  432.  
  433.    translate 28*z
  434.    }
  435.  
  436. // Table
  437.  
  438. union
  439.    {
  440.    intersection
  441.       {
  442.       plane {  y, -3 }
  443.       plane {  -y, 8 }
  444.       sphere { -5.5*y, 55 }
  445.       }
  446.    
  447.    intersection
  448.       {
  449.       plane { y, -8 }
  450.       plane { -y, 80 }
  451.  
  452.       object
  453.          {
  454.          Hyperboloid_Y
  455.  
  456.          scale <10, 20, 10>
  457.          translate -20*y
  458.          }
  459.  
  460.       bounded_by { sphere { -50*y, 44.2 } }
  461.       }
  462.    
  463.    pigment
  464.       {
  465.       granite
  466.       scale 6
  467.       quick_colour rgb .5
  468.       }
  469.  
  470.    finish { specular 1 roughness .02 reflection .3 }
  471.    }
  472.  
  473. // Sky
  474.  
  475. object
  476.    {
  477.    sphere { -39000*y, 40000 inverse }
  478.  
  479.    pigment
  480.       {
  481.       bozo
  482.  
  483.       colour_map
  484.          {
  485.          [.5, colour rgb <.4, .5, 1> ]
  486.          [.7, colour rgb 1           ]
  487.          [1   colour rgb .7          ]
  488.          }
  489.  
  490.       turbulence .6
  491.       quick_colour rgb <.4, .5, 1>
  492.  
  493.       scale 500
  494.       }
  495.  
  496.    finish { ambient 1 diffuse 0 }
  497.  
  498.    no_shadow
  499.    }
  500.  
  501. // Ground
  502.  
  503. object
  504.    {
  505.    plane { y, -80 }
  506.    pigment { rgb <.1, .6, .05> }
  507.    finish { crand .05 ambient .5 diffuse .5 }
  508.    no_shadow
  509.    }
  510.